home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
CC_C
/
0574.ZIP
/
D2IOH.INC
< prev
next >
Wrap
Text File
|
1986-07-25
|
2KB
|
119 lines
; D2IOH.INC - include for .ASM files in d2io system - jwk - 07/25/86
; duplicates the definitions in D2IO.H used by C source files
EOF equ (-1)
NULL equ 0
YES equ 1
NO equ 0
.xlist
ftbdef macro defftb
if defftb
public _ftb
_ftb ftb <,rdbit,,> ;stdin - preopened for read only
ftb <,wrbit,,> ;stdout - preopened for write only
ftb <,wrbit,,> ;stderr - preopened for write only
ftb <,rdbit+wrbit,,> ;stdaux - preopened for read/write
ftb <,rdbit+wrbit,,> ;stdlst - preopened for read/write
rept 15
ftb <,,,> ;;files - not open yet
endm
else
extv _ftb, byte
endif
endm
hdl macro streamptr
local j1, j2
mov ax, streamptr
sub ax, stdin
js j1 ; too low
mov bx, type ftb
div bx
cmp ax, 20 ;;DOS limit
jb j2 ; valid handle
j1: mov ax, eof ; pointer bad
j2 label near
endm
getftb macro stream, item, dest
havtyp = 0
ifidn <item>, <ugc>
mov si, stream
mov dest, [si]
havtyp = 1
endif
ifidn <item>, <mode>
mov si, stream
mov dest, byte ptr item[si]
havtyp = 1
endif
ifidn <item>, <crflg>
mov si, stream
mov dest, byte ptr item[si]
havtyp = 1
endif
ifidn <item>, <ercd>
mov si, stream
mov dest, byte ptr item[si]
havtyp = 1
endif
ife havtyp
error item is unknown
endif
endm
putftb macro stream, item, src
havtyp = 0
ifidn <item>, <ugc>
mov si, stream
mov [si], src
havtyp = 1
endif
ifidn <item>, <mode>
mov si, stream
mov byte ptr item[si], src
havtyp = 1
endif
ifidn <item>, <crflg>
mov si, stream
mov byte ptr item[si], src
havtyp = 1
endif
ifidn <item>, <ercd>
mov si, stream
mov byte ptr item[si], src
havtyp = 1
endif
ife havtyp
error item is unknown
endif
endm
ftb struc
ugc dw -1 ; unget character storage
mode db 0 ; mode bits defined by mdbit
crflg db 0 ; flag = 1 if last char was CR
ercd db 0 ; DOS error code if errbit==1
ftb ends
mdbit record err:1, ef:1, raw:1, wr:1, rd:1
.list
rdbit = mask rd
wrbit = mask wr
rawbit = mask raw
eofbit = mask ef
errbit = mask err
dirty = 128
stdin equ offset _ftb[ 0]
stdout equ offset _ftb[ type ftb]
stderr equ offset _ftb[2 * type ftb]
stdaux equ offset _ftb[3 * type ftb]
stdlst equ offset _ftb[4 * type ftb]